/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.chinasofti.regie.weixin.service.api;

import com.github.vioao.wechat.bean.request.SignatureInfo;
import com.github.vioao.wechat.bean.xml.in.InMessage;
import com.github.vioao.wechat.bean.xml.out.XmlMessage;

/**
 * <p>用户接收微信服务器端消息及与微信交互</p>
 * <p>即被动消息</p>
 * @author 张森
 */
public interface MessageGateway {
    /**
     * 用于验证微信签名信息
     * @param echostr 
     * @return 
     */
    boolean verify(String echostr);
    /**
     * 用于验证微信签名信息
     * @param encryptType 加密类型
     * @param echostr 
     * @return 
     */
    boolean verify(String encryptType, String echostr);
    /**
     * 用于验证微信签名信息 
     * @param signature
     * @param timestamp
     * @param nonce
     * @return 
     */
    boolean verify(String signature,String timestamp,String nonce);
    /**
     * 用于验证微信签名信息 
     * @param encryptType
     * @param signature 签名串，对应URL参数的signature
     * @param msgSignature 签名串，对应URL参数的msg_signature
     * @param timestamp 时间戳，对应URL参数的timestamp
     * @param nonce 随机串，对应URL参数的nonce
     * @return 
     */
    boolean verify(String encryptType,String signature, String msgSignature, String timestamp, String nonce);
    /**
     * 用于验证微信签名信息
     * @param encryptType 加密方式
     * @param echostr 
     * @return 
     */
    String decode(String encryptType, String echostr);
    /**
     *  消息处理
     * @param timestamp
     * @param nonce
     * @param encryptType
     * @param msgSignature
     * @param message
     * @return 
     */
    XmlMessage handle(String timestamp, String nonce, String encryptType, String msgSignature, String message);
    /**
     * 返回JSApiTicket信息
     * @return 
     */
    String getJSApiTicket();
}
